#ifndef LLIST_H__
#define LLIST_H__

#define LLIST_FORWARD 1
#define LLIST_BACKWARD 2

typedef void llist_op(const void *);
struct llist_node_st
{
    void *data;
    struct llist_node_st *prev;
    struct llist_node_st *next;
};

typedef struct 
{
    int size;
    struct llist_node_st head;
}LLIST;

typedef void llist_op(const void *);
typedef int llist_cmp(const void *,const void *);



LLIST *llist_creat(int initsize);
int llist_insert(LLIST *,const void *data,int mode);
void *llist_find(LLIST *,const void *key,llist_cmp *);
int llsit_delete(LLIST *, const void *key,llist_cmp *);

int llsit_fetch(LLIST *, const void *key, llist_cmp *, void *data);

void llist_travel(LLIST *, llist_op *);
void llist_destroy(LLIST *);
#endif



